define(function(require, exports, module) {
  var $ = require('$');
  var formcc = require('form');
  var nav = require("bootstrap_nav");
  var bootbox = require("bootbox");
  var dtUtil = require('datatableutil');
  var store = require("store");
  var loader = require("./loader/loader");
  require("bootstrap-datetimepicker.min.css");
  require("bootstrap_commonrequire");
  require("moment");
  require("bootstrap_datetimepicker");
  require('select2.css');
  require('select2');

  exports.init = function(divId, data) {
    // 父节点，单选按钮的name值
    var parent = "";
    // 当前节点，单选按钮的value值
    var myId = "";
    // 父节点
    var parentId = -1;
    // 判断通过应用账号更改所有相对应的组织账户
    var isUpdate = "false";

    // 获取表单数据
    var isvrecord = {};
    // 使用后台要求的JSON格式的json串
    var ruleAccount = {};
    // 用于提交保存用json
    var resultJson = "";
    if (data)
      isvrecord = data;
    
    // 加载表单模板和数据
    var Table = require("table");
    // 查询内容显示
    new Table({
      attrs : {
        id : "data_table2",
        isHovered : false,
        isStriped : true,
        isBordered : false
      },
      renderTo : "accountinfo_data_table2"
    });
    // 数据记录信息显示区
    var isvinfo_data_table = $('#data_table2').dataTable( {
      "sDom" : "<'hidden'<'span6'l><'hidden'f>r>t<'row-fluid'<'span6'i><'span6'p>>",
      "bJQueryUI" : false,
      "oLanguage" : {
        "sUrl" : "/business/js/common/table/src/lang/dataTable.cn.txt"
      },
      "sPaginationType" : "bootstrap", // 分页自带两种样式，full_numbers和two_button(默认)
      'bPaginate' : false, // 是否分页
      "bProcessing" : false, // 当datatable获取数据时候是否显示正在处理提示信息。
      "bServerSide" : false, // 指定服务器端分页
      "bDeferRender" : true,// bServerSide,bProcessing,bPaginate均为false
      "bFilter" : true,
      "bSort" : false,
      "bInfo" : false,// 不显示“当前显示 1 到 8 条，共 8 条记录”这句话
      "sAjaxSource" : "/appExtend/queryRuleByAccountId.do?app_key="+isvrecord.app_key+"&cust_account=-1", 
      "iDisplayLength" : DATATABLES_CONFIG.iDisplayLength.DEFAULT, // 默认分页的每页记录数
      "fnServerData" : function(sSource, aoData, fnCallback, oSettings) {
        var queryparam = dtUtil.convert_aoData(aoData);

        // 添加自己的额外参数
        oSettings.jqXHR = $.ajax({
          "dataType" : 'json',
          "contentType" : "application/json;charset=UTF-8",
          "type" : "GET",
          "url" : sSource,
          "data" : queryparam, // 将请求数据转换为后台要求的JSON格式
          "success" : function(json) {
            if (json.flag == '000000') {
              ruleAccount = json;
              dtUtil.successCallback(json, aoData, fnCallback);
              // 首先获取#data_table2中的内容，放在#div_input_tmp中；
              var div_input_tmp = $("#data_table2").parent().html();
              // 然后清除div内容，这样#data_table2中的内容为空；
              $("#data_table2").parent().empty();
              // 最后在#div_input中显示#div_input_tmp的内容
              $("#div_input").parent().parent().html(div_input_tmp);
              $("#data_table2 tbody").on("click", "tr>td>a.btn", function(e) {
            	  var rowNode = this.parentNode.parentNode;
            	  var typeId=$(rowNode).find('b:first').html();
            	  app_key=isvrecord.app_key;
            	  cust_account="-1";
            	  bootbox.confirm({
            		    title: "Destroy planet?",
            		    message: "Do you want to activate the Deathstar now? This cannot be undone.",
            		    buttons: {
            		        cancel: {
            		            label: '<i class="fa fa-times"></i> Cancel'
            		        },
            		        confirm: {
            		            label: '<i class="fa fa-check"></i> Confirm'
            		        }
            		    },
            		    callback: function (result) {
            		        console.log('This was logged in the callback: ' + result);
            		    }
            		});
            	  bootbox.confirm("确定清除所选规则吗?", function(YesOrNo)
                  {
                      if (YesOrNo)//确定后逻辑
                      {
                    	  loader.loading("正在提交，请稍等……");
                    	  $.ajax({
                    		  url : "/appExtend/deleteRuleAccouunt.do",
                    		  type : "POST",
                    		  dataType : "json",
                    		  data:{
                    			  'app_key':app_key,
                    			  'cust_account':cust_account,
                    			  'type':typeId
                    		  },
                    		  async : false,
        					  success : function(json) {
        							if (json.flag == '000000') {
        								bootbox.alertTimeout("清除规则设置成功！");
        								loader.noloading();
        								nav.toPageView("admin/accountinfo.html");
        							} else {
        								oauth2Relogin();
        							}
        					  },
        					  error : function() {
        							loader.noloading();
        							bootbox.alertTimeout("网络请求失败，请重试！");
        					  }
                    	  });
                      }
                  });
            	  
               });
            } else {
              oauth2Relogin();
            }
          }
        });
      },

      "aoColumns" : [
      {
        "sTitle" : "id",
        "bSortable" : false,
        "mData" : "id",
        "bVisible" : false,
        "mRender" : function(data, status, full) {
          myId = data;
          return myId;
        }
      },
      {
        "sTitle" : "父节点",
        "bSortable" : false,
        "mData" : "parent_id",
        "bVisible" : false,
        "mRender" : function(data, status, full) {
          if (data != null) {
            parentId = data;
            if (parentId == -1) {
              parent = "";
            } else {
              parent = parentId + "";
            }
          } else {
            parentId = -1;
          }
          return parentId;
        }
      },
      {
        "sTitle" : "能力标识",
        "bSortable" : false,
        "mData" : "type",
        "mRender" : function(data, status, full) {
          var strType = data;
          if (parentId == -1) {
            return '<h4><b>' + strType + '</b></h4>';
          } else {
            return strType;
          }
        }
      },
      {
        "sTitle" : "能力名称",
        "bSortable" : false,
        "mData" : "names",
        "mRender" : function(data, status, full) {
          var strName = data;
          if (parentId == -1) {
            return '<h4><b>' + strName + '</b></h4>';
          } else {
            return strName;
          }
        }
      },
      {
        "sTitle" : "设为默认使用",
        "bSortable" : false,
        "mData" : "default_using",
        "mRender" : function(data, status, full) {
            if (data != null && parentId != -1) {
              // 如果数据库default_using为yes，则按钮为选中状态；否则为非选中状态
              if (data == "yes") {
                return '<input name="' + parent
                    + '" class="only-checkbox tableCheckbox" style="width:85px;" type="radio" value="' + myId + '" checked />';
              } else {
                return '<input name="' + parent
                    + '" class="only-checkbox tableCheckbox" style="width:85px;" type="radio" value="' + myId + '" />';
              }
            } else {
              return "<a href='javascript:void(0); ' class='btn '><span>清除设置</span></a>";
            }
          }
        
      } ],
      "fnDrawCallback" : function(oSettings) {
        // 表格绘制完成后，去除width属性，使表格可缩放
        $('#' + oSettings.sTableId).css("width", "");
      
      }
    });
    
   
    
    //-----------formcc------------
    new formcc({
        attrs : {
          title : "能力计费规则编辑",
          spansize : 'span12',
          id : "accountrecordform",
          items : [ {
            isText : true,
            label : "账号",
            id : 'acc_name',
            name : 'acc_name',
            type : "text",
            style : "width:50%",
            readonly : true,
            value : isvrecord.app_name,
            validations : {
              required : true,
              maxlength : 50
            }
          }, {
            isText : true,
            label : "内容",
            id : 'div_input',
            name : 'div_input',
            type : "text",
            style : "width:50%"
          } ],

          buttons : [ {
            text : "保存",
            id : "btn_save",
            type : "submit",
            style : "btn btn-contrast",
            icon : "save",
          }, {
            text : "取消",
            id : "btn_cancel",
            style : "btn",
            type : "button",
            icon : "undo",
          } ]

        },
        renderTo : divId,
        afterRender : function() {
          var theme = require('bootstrap_theme');
          theme.setValidateForm($("#accountrecordform"), function() {
            // 判断输入框中的内容是否符合正则表达式；是则添加一个true，否则添加一个false
            if(true){
              // 蒙版显示
              var ruleinfo = function(context) {
                loader.loading("数据加载中，请稍后……");
                var ruleinfo_init = require("./ruleaccountinforeturnformmodal");
                if ($("#ruleinfo_id").length <= 0)
                  $("body").append("<div id='ruleinfo_id'></div>");
                ruleinfo_init.init({
                      "title" : "请确认操作",
                      "renderTo" : "ruleinfo_id",
                      "details": context
                });
              };
            

              
              // 显示蒙版
              ruleinfo('您确定要将该应用账号下的所有组织账户的配置全部更改吗？若保留原来已经配置的组织账号，而只更改未配置的，请点击“部分更改”');
              // 全部更改按钮事件
              $("#btndialogconfirm").click(function(event) {
                isUpdate = "true";
                // 蒙版消失
                loader.noloading();
                $('#my_ruleacc_id').modal('hide');
                mySaveData(isUpdate);
              });
              
              // 部分更改按钮事件
              $("#btndialogpart").click(function(event) {
                isUpdate = "false";
                // 蒙版消失
                loader.noloading();
                $('#my_ruleacc_id').modal('hide');
                mySaveData(isUpdate);
              });
              
              // 返回按钮事件
              $("#btndialogcancel").click(function(event) {
                loader.noloading();
                // 蒙版消失
                $('#my_ruleacc_id').modal('hide');
              });
              
              // 点击“全部更改”或“部分更改”按钮后，执行的数据操作
              var mySaveData = function(isUpdate){
                if(isvrecord.periphery_code=="" || isvrecord.periphery_code==null){
                	bootbox.alert("无外系统编码，请先联系管理员进行设置外系统编码");
              	  return;
                }
                // 获取拼接成json串（data、flag、desc）中的data属性
                var data = ruleAccount.data;
                // 获取data中的items属性
                var items = data.items;
                // 用来保存相同name属性而不同value的input输入框的Array数组
                var valArr = new Array;
                
                // 单选按钮，设置default_using的值  
                var radioUsingArr = new Array;
                //用于判断是否为第一条数据
                var num=0;
                var resultJson="";
                for ( var i = 0; i < items.length; i++) {
                  // items需要分别获取其属性值
                  var bean = items[i];
                  if(bean.menu_type=="types"){
                    continue;
                  }else{
                    // 分别获取每个类型为radio的单选按钮的选中事件
                    if ($("input[type='radio']").get(num).checked) {
                      radioUsingArr[num] = "yes";
                    } else {
                      radioUsingArr[num] = "no";
                    }
                   
                    
                    var formdata = {
                  	  app_key : isvrecord.app_key,
                        rule_id : bean.id,
                        account_type : bean.type,
                        cust_account:'-1',
                        rule_names : bean.names,
                        periphery_code : isvrecord.periphery_code,
                        default_using : radioUsingArr[num]
                    };
                 // 设置用于提交的json串，需要用“[]”包裹相关属性，且各个属性间需要用“,”隔开
                    if(radioUsingArr[num] == "yes"){
                  	  if(resultJson==""){
                  		 resultJson = "[" + JSON.stringify(formdata);
                      }else{
                         resultJson = resultJson + "," + JSON.stringify(formdata);
                      }
                    }
                    num=num+1;
                  }
                }
                resultJson = resultJson + "]";
                loader.loading("正在提交，请稍等……");
                $.ajax({
                  url : "/appExtend/doRuleAccouuntInsert.do?isUpdate=" + isUpdate,// GLOBAL.URL.ADMIN_RETURNLICENSECARRIER,
                  dataType : "json",
                  data : "data=" + resultJson,
                  type : "POST",
                  async : true,
                  success : function(json) {
                    if (json.flag == '000000') {
                      nav.toPageView("admin/accountinfo.html");
                      loader.noloading();
                    } else {
                      oauth2Relogin();
                    }
                  },
                  error : function() {
                    loader.noloading();
                    bootbox.alertTimeout("网络请求失败，请重试！");
                  }
                });
              };
              
            }
          });
         
          $('#btn_cancel').on('click', function() {
            // 点击取消时，防止出现#data_table2中内容为空，所以将其上级内容置空一下
            $("#data_table2").parent().empty();
            $('#accountinfo_data_table_edit').hide();
            $('#accountinfo_data_table').show();
            $('#accountinfo_data_table2').hide();
            $("#accountForm").show();
            $("#queryAreaId").show();
          });

        }
      });
    //-----------formcc------------
  };
 
});
